import router from "@/routers/router";
import NProgress from "@/config/nprogress";
import { useUserinfoStore } from "@/stores/userinfo";

// * 路由拦截 beforeEach
router.beforeEach((to, from, next) => {
	//页面顶部加载的的进度条
	NProgress.start();
	// * 在跳转路由之前，清除所有的请求

	// * 判断当前路由是否需要访问权限
	//这里用some遍历数组的原因是必须全部都不需要权限才放行，如果直接to.matched.requiresAuth会放过子级路由而只注重当前跳转的路由
	//to.matched包含了所有嵌套路由的信息,此处用于检索所有的requireAuth，如果都不需要权限才放行，否则终止
	//to.matched.some(record => record.meta.requiresAuth)表示在遍历这个路由集合，如果其中有一个需要权限那么就返回true
	//前面加上！表示只有全部都没有权限才放行

	if (!to.matched.some(record => record.meta.requiresAuth)) {
		return next();
	}
	//如果需要路由权限开启token的判断，全部通过再放行
	// * 判断是否有Token+
	const token = useUserinfoStore().token;

	if (!token) {
		next({
			path: "/login"
		});
		//进度条结束
		NProgress.done();
		return;
	} else {
		next();
		NProgress.done();
		return;
	}
});
router.afterEach(() => {
	NProgress.done();
});

export default router;
